package com.yl.chainStore.util

import java.text.SimpleDateFormat
import java.util.*

open class GenerateNum{

    // 全局自增数
    protected var count = 0

    // 每毫秒秒最多生成多少订单（最好是像9999这种准备进位的值）
    protected val total = 999

    // 格式化的时间字符串
    protected val sdf = SimpleDateFormat("yyMMdd")

    // 获取当前时间年月日时分秒毫秒字符串
    protected fun getNowDateStr(): String {
        return sdf.format(Date())
    }

    // 记录上一次的时间，用来判断是否需要递增全局数
    protected var now: String? = null

    /*
     * 生成一个订单号
     */
    @Synchronized
    fun generateOrder(pre:String): String {
        val datastr = getNowDateStr()
        if (datastr == now) {
            count++ // 自增
        } else {
            count = 1
            now = datastr
        }
        val countInteger = total.toString().length - count.toString().length // 算补位
        var bu = "" // 补字符串
        for (i in 0 until countInteger) {
            bu += "0"
        }
        bu += count.toString()
        if (count >= total) {
            count = 0
        }
        return pre + datastr + bu
    }

}
